package fr.ul.ade.secunde.util;

import java.util.Arrays;
import java.util.List;

/**
 * Classe auxiliaire fournissant des méthodes pour convertir une chaîne
 * contenant plusieurs ressources en liste de ressources et vice-versa.
 * 
 * @author Michaël Schnell
 * @since Jul 8, 2013
 * 
 * @version 1.5
 */
public abstract class ResourceManager {

	/**
	 * Séparateur utilisé dans les chaînes de caractères encodant une liste des
	 * ressources.
	 */
	public static final String RESOURCE_SEPARATOR = "|"; //$NON-NLS-1$

	/**
	 * Expression régulière correspondant au séparateur utilisé dans les chaînes
	 * de caractères encodant une liste des ressources.
	 */
	public static final String RESOURCE_SEPARATOR_REGEXP = "\\|"; //$NON-NLS-1$

	/**
	 * Taille d'une ressource représentant un numéro étudiant.
	 */
	public static final int STUDENT_NUMBER_LENGTH = 8;

	/**
	 * Indique si une ressource fournie est un numéro étudiant.
	 * 
	 * @param resource
	 *            ressource à analyser
	 * @return {@code true} si la ressource est un numéro étudiant,
	 *         {@code false} sinon
	 */
	public static boolean isStudentNumber(final String resource) {
		return resource.length() == STUDENT_NUMBER_LENGTH;
	}

	/**
	 * Découpe la chaine fournie contenant plusieurs ressources et retourne une
	 * liste contenant les ressources extraites.
	 * 
	 * @param combinedResources
	 *            chaine contenant aucune, une ou plusieurs ressources
	 * @return liste contenant les ressources
	 */
	public static List<String> splitResources(String combinedResources) {
		return Arrays
				.asList(combinedResources.split(RESOURCE_SEPARATOR_REGEXP));
	}
}// class ResourceManager